package demo;

import lombok.Data;

import java.util.List;
import java.util.Map;

@Data
public class JvmMemoryMetrics {
    // 堆内存指标
    private long heapUsed;
    private long heapCommitted;
    private long heapMax;
    
    // 非堆内存指标
    private long metaspaceUsed;
    private long metaspaceCommitted;
    private long metaspaceMax;
    
    // 直接内存指标
    private long directMemoryUsed;
    
    // 内存池详情
    private List<MemoryPoolMetrics> memoryPools;
    
    // GC 统计
    private List<GcMetrics> gcMetrics;
    
    // CPU 使用率
    private double processCpuUsage;
    private double systemCpuUsage;
    
    // 构造方法、getter 和 setter
    public JvmMemoryMetrics() {}
    
    // 省略 getter 和 setter 方法...
    
    // 内存池指标内部类

    @Data
    public static class MemoryPoolMetrics {
        private String name;
        private long used;
        private long committed;
        private long max;
        private String memoryType;
        
        // 构造方法、getter 和 setter
        public MemoryPoolMetrics() {}
        
        // 省略 getter 和 setter 方法...
    }
    
    // GC 指标内部类

    @Data
    public static class GcMetrics {
        private String name;
        private long count;
        private long time;
        private String lastCause;
        
        // 构造方法、getter 和 setter
        public GcMetrics() {}
        
        // 省略 getter 和 setter 方法...
    }
}